//本文件填写Rogue-开始事件执行周期内相关阶段函数
//【记得经常使用 Ctrl+S 保存修改，只有保存以后才能在编辑事件时生效】
//可引用变量 ArgBox - 该事件从上层事件继承的参数盒子

/// <summary>
/// 在此区域填写自定义的using指令
/// 注意：一般事件制作不需要填写; 在你明确知道每个using指令的意义和有明确使用需求的情况下再填写此指令集
/// </summary>
#region CustomUsings

#endregion

/// <summary>
/// 该事件监听的触发点被触发后，该接口检测事件是否满足执行条件，如果不满足则不执行该事件
/// </summary>
/// <returns>true - 可以执行 false - 忽略触发不执行</returns>
public override bool OnCheckEventCondition()
{
	//TODO
	return true;
}

/// <summary>
/// 该事件被触发且满足执行条件，事件显示前调用
/// 一般用于向参数盒子中准备事件链需要用到的参数
/// </summary>
public override void OnEventEnter()
{
	// 世界线没发生改变，跳过事件
	if (!EventHelper.CheckMainStoryLineProgress(100))
	{
		EventHelper.ToEvent(string.Empty);
	}
	//TODO
	var curId = -1;
	if(!ArgBox.Get("RoleHuanxin", ref curId))
	{
		var TestCharacter = EventHelper.GetOrCreateFixedCharacterByTemplateId(Config.Character.DefKey.Huanxin);
		ArgBox.Set("RoleHuanxin", TestCharacter.GetId());
		ArgBox.Set(EventArgBox.HideFavorability, true);//不显示目标人物好感
		ArgBox.Set(EventArgBox.ForbidViewCharacter, true);//禁止查看目标人物标记位
	}

	// 把所有学到的功法满熟练 & 书页
	var taiwu = ArgBox.GetCharacter(EventArgBox.RoleTaiwu);
	List<short> combatSkills = EventHelper.GetCharCombatSkillList(taiwu.GetId());
	combatSkills.ForEach((short skillId) => {
		var skill = GameData.Domains.DomainManager.CombatSkill.GetElement_CombatSkills(
			new CombatSkillKey(taiwu.GetId(), skillId)
		);
		skill.SetPracticeLevel(100, GameData.Domains.DomainManager.TaiwuEvent.MainThreadDataContext);
		skill.SetReadingState(0xFFFF, GameData.Domains.DomainManager.TaiwuEvent.MainThreadDataContext);
	});

	EventHelper.SetFirstSwordTombFinish(); // 解锁第一阶段
	// int fixedCharacterIdByTemplateId = EventHelper.GetFixedCharacterIdByTemplateId(Config.Character.DefKey.TrappedHuanxin);
	// this.ArgBox.Set("RoleHuanxin", fixedCharacterIdByTemplateId);
	// EventHelper.Log("RoleHuanxin Set");
}

/// <summary>
/// 该事件执行完毕，即将退出该事件时调用
/// 一般用于从参数盒子中移除事件链中不需要用到的参数，或记录事件触发月份，确保后续触发几率计算
/// </summary>
public override void OnEventExit()
{
	//TODO
}

/// <summary>
/// 该事件即将显示前调用,获取被替换占位符后的事件显示内容
/// 如果事件文本预设满足系统默认的占位符替换方案，则可以不填写此接口
/// </summary>
public override string GetReplacedContentString()
{
	//TODO
	return string.Empty;
}

/// <summary>
/// 获取额外格式化使用的多语言字段
/// </summary>
/// <returns></returns>
public override List<string> GetExtraFormatLanguageKeys()
{
    return default;
}